package cn.kgm.handler;

import cn.kgm.entity.Command;
import cn.kgm.result.Result;
import cn.kgm.server.IMServer;
import io.netty.channel.ChannelHandlerContext;

import java.util.Optional;

/**
 * @Version 1.8
 * @Author: Kappi
 * @Date: 2023-11-28 16:50
 * @Description: cn.kgm.handler.ChatHandler
 */
public class ChatHandler {

    /**
     * @param chc 当前登录用户占用的通道
     * @param command 指令
     */
    public static void execute(ChannelHandlerContext chc, Command command) {
        // 检查当前用户是否在线
        if (!IMServer.USERS.containsKey(command.getNickname())) {
            chc.channel().writeAndFlush(Result.fail("请登录"));
            return;
        }
        // 给朋友列表发送消息
        if (command.getFriends().length > 0){
            for (String friend : command.getFriends()) {
                Optional.ofNullable(IMServer.USERS.get(friend))
                        .ifPresent(userChannel->{
                    userChannel.writeAndFlush(Result.success(command.getNickname(),command.getMessage()));
                });
            }
        }
    }
}
